package com.wbp.cms.core.user.dao;

import java.util.List;

import org.springframework.stereotype.Repository;
import com.wbp.cms.client.user.domain.RoleDO;
import com.wbp.cms.client.user.query.RoleQuery;
import com.wbp.cms.core.dao.BaseDao;


/**
 * @Description: 
 * @Department:
 * @author andy.lhc
 * @date 2016年3月20日 上午10:43:59 
 */
@Repository("roleDAO")
public class RoleDAO extends BaseDao {
  
  public Long insert(RoleDO role) {
    super.insert("RoleMapper.insert", role);
    return role.getId();
  }

  public int update(RoleDO role) {
    return super.update("RoleMapper.update", role);
  }

  public List<RoleDO> query(RoleQuery query) {
    return super.selectList("RoleMapper.query", query);
  }
  
  /**
   * 得到子角色，在创建用户时，只能赋给用户子角色。
   * @param query
   * @return
   */
  public List<RoleDO> queryChildRole(Long  roleId) {
    return super.selectList("RoleMapper.queryChildRole", roleId);
  }

  public Integer queryCount(RoleQuery query) {
    Object obj = super.selectOneObject("RoleMapper.queryCount", query);
    return obj == null ? 0 : (Integer) obj;
  }

  public RoleDO load(Long id) {
    Object obj = super.selectOneObject("RoleMapper.load", id);
    return obj == null ? null : (RoleDO) obj;
  }
  
  /**
   * 根据userId查出一个角色
   * @param userId
   * @return
   */
  public RoleDO  queryRoleByUserId(Long  userId){
    List<RoleDO> list = this.queryRolesByUserId(userId) ;
    if(list == null || list.isEmpty() )
       return null ;
    return  list.get(0) ;
  }
  /**
   * 根据userId查出多个角色
   * @param userId
   * @return
   */
  public List<RoleDO>  queryRolesByUserId(Long  userId){
    return  super.selectList("RoleMapper.queryRoleByUserId", userId);
  }
  
}
